#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int g_val=100;
int main()
{
  pid_t id=fork();
if(id==0)
{//子进程
  int cnt=0;
  while(1)
  {
    printf("child pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
    sleep(1);
    cnt++;
    if(cnt==5)
    {
      g_val=200;
      printf("child change g_val:100->200\n");
    }
  }
}
  else
  {//父进程
    while(1)
    {
    printf("father pid:%d,ppid:%d,g_val:%d,&g_val:%p\n",getpid(),getppid(),g_val,&g_val);
    sleep(1);
    }
}
  return 0;
}
//int uninitval;
//int initval=100;
//int main(int argc,char*argv[],char*env[])
//{
//  printf("code addr:%p\n",main);
//  
//  char*str="aaaaaaaaaaa";
//  printf("const area addr:%p\n",str);
//
//  printf("init data addr:%p\n",&initval);
//  static int a=10;
//  printf("static a addr:%p\n",&a);
//  printf("uninit data addr:%p\n",&uninitval);
//
//  char*heap1=(char*)malloc(20);
//  char*heap2=(char*)malloc(20);
//  char*heap3=(char*)malloc(20);
//  char*heap4=(char*)malloc(20);
//
//  printf("heap1 addr:%p\n",heap1);
//  printf("heap2 addr:%p\n",heap2);
//  printf("heap3 addr:%p\n",heap3);
//  printf("heap4 addr:%p\n",heap4);
//
//  printf("stack1 addr:%p\n",&heap1);
//  printf("stack2 addr:%p\n",&heap2);
//  printf("stack3 addr:%p\n",&heap3);
//  printf("stack4 addr:%p\n",&heap4);
//
//for(int i=0;argv[i];i++)
//{
//  printf("&argv[%d] addr:%p\n",i,&argv[i]);
//}
//for(int i=0;env[i];i++)
//{
//  printf("&env[%d] addr:%p\n",i,&env[i]);
//}
//for(int i=0;argv[i];i++)
//{
//  printf("argv[%d] addr:%p\n",i,argv[i]);
//}
//for(int i=0;env[i];i++)
//{
//  printf("env[%d] addr:%p\n",i,env[i]);
//}
//  return 0;
//}
